Gitã¯ãŒã¯ãããŒã®æé©åããã¹ã¿ãŒããã³ã©ãã¬ãŒã·ã§ã³ãã³ãŒãå質ãçç£æ§ãåäžãããŸãããããã©ã³ãæŠç¥ãã³ãããã®ãã¹ããã©ã¯ãã£ã¹ãé«åºŠãªGitãã¯ããã¯ãåŠã³ãŸãã
Gitã¯ãŒã¯ãããŒã®æé©åïŒã°ããŒãã«ããŒã ã®ããã®å æ¬çã¬ã€ã
仿¥ã®ããŒã¹ã®éããœãããŠã§ã¢éçºç°å¢ã«ãããŠã广çãªããŒãžã§ã³ç®¡çã¯äžå¯æ¬ ã§ããGitã¯ãæ¯é çãªããŒãžã§ã³ç®¡çã·ã¹ãã ãšããŠãã³ã©ãã¬ãŒã·ã§ã³ã®ä¿é²ãã³ãŒãå質ã®ç¢ºä¿ãéçºã¯ãŒã¯ãããŒã®åçåã«ãããŠéèŠãªåœ¹å²ãæãããŠããŸãããã®ã¬ã€ãã§ã¯ãå°ççãªå ŽæãããŒã ã®èŠæš¡ããããžã§ã¯ãã®è€éãã«é¢ããããã°ããŒãã«ããŒã ã«é©çšå¯èœãªGitã¯ãŒã¯ãããŒæé©åæè¡ã®å æ¬çãªæŠèŠãæäŸããŸãã
ãªãGitã¯ãŒã¯ãããŒãæé©åããã®ãïŒ
æé©åãããGitã¯ãŒã¯ãããŒã¯ãæ°å€ãã®å©ç¹ããããããŸãïŒ
- ã³ã©ãã¬ãŒã·ã§ã³ã®åŒ·åïŒ æšæºåãããã¯ãŒã¯ãããŒã¯ãæç¢ºãªã³ãã¥ãã±ãŒã·ã§ã³ãä¿é²ããç¹ã«å°ççã«åæ£ããããŒã éã§ã®ã³ã³ããªã¯ããé²ããŸãã
- ã³ãŒãå質ã®åäžïŒ ã¯ãŒã¯ãããŒã«çµ±åããã峿 Œãªã³ãŒãã¬ãã¥ãŒããã»ã¹ã¯ãæœåšçãªåé¡ãæ©æã«ç¹å®ãã察åŠããã®ã«åœ¹ç«ã¡ãŸãã
- çç£æ§ã®åäžïŒ åçåãããããã»ã¹ã¯ãç¡é§ãªæéãšåŽåãåæžããéçºè ãã³ãŒãèšè¿°ã«éäžã§ããããã«ããŸãã
- ãšã©ãŒã®åæžïŒ æç¢ºãªãã©ã³ãæŠç¥ãšæç¢ºã«å®çŸ©ãããã³ããããã©ã¯ãã£ã¹ã¯ãã³ãŒãããŒã¹ã«ãã°ãæ··å ¥ãããªã¹ã¯ãæå°éã«æããŸãã
- ããè¯ããããžã§ã¯ã管çïŒ éææ§ã®é«ãã¯ãŒã¯ãããŒã¯ãéçºããã»ã¹ãžã®å¯èŠæ§ãé«ããããè¯ã远跡ãšç®¡çãå¯èœã«ããŸãã
- ããéããªãªãŒã¹ïŒ å å®ãªGitã¯ãŒã¯ãããŒäžã«æ§ç¯ãããå¹ççãªCI/CDãã€ãã©ã€ã³ã¯ãããéããããé »ç¹ãªãªãªãŒã¹ãå¯èœã«ããŸãã
ãã©ã³ãæŠç¥ã®éžæ
ãã©ã³ãæŠç¥ã¯ãGitãªããžããªã§ãã©ã³ããã©ã®ããã«äœ¿çšããããå®çŸ©ããŸããé©åãªæŠç¥ãéžæããããšã¯ãã³ãŒãã®å€æŽç®¡çãæ©èœã®åé¢ããªãªãŒã¹ã®æºåã«ãšã£ãŠéåžžã«éèŠã§ãã以äžã«ã人æ°ã®ãããã©ã³ãã¢ãã«ãããã€ã玹ä»ããŸãïŒ
Gitflow
Gitflowã¯ãmasterïŒãŸãã¯mainïŒãšdevelopãšãã2ã€ã®ã¡ã€ã³ãã©ã³ããå©çšããã確ç«ããããã©ã³ãã¢ãã«ã§ãããŸããæ©èœããªãªãŒã¹ãããããã£ãã¯ã¹ã®ããã®ãµããŒããã©ã³ãã䜿çšããŸãã
ãã©ã³ãïŒ
- master (ãŸã㯠main)ïŒ æ¬çªç°å¢ã«å¯Ÿå¿ããã³ãŒãã衚ããŸãã
- developïŒ æ©èœãçµ±åãããªãªãŒã¹ã«åããŸãã
- featureãã©ã³ãïŒ æ°æ©èœã®éçºã«äœ¿çšãããŸãã
developã«ããŒãžãããŸãã - releaseãã©ã³ãïŒ ãªãªãŒã¹ã®æºåã«äœ¿çšãããŸãã
masterãšdevelopã«ããŒãžãããŸãã - hotfixãã©ã³ãïŒ æ¬çªç°å¢ã®é倧ãªãã°ä¿®æ£ã«äœ¿çšãããŸãã
masterãšdevelopã«ããŒãžãããŸãã
é·æïŒ
- æç¢ºã«å®çŸ©ãããæ§é åãããŠããŸãã
- ã¹ã±ãžã¥ãŒã«ããããªãªãŒã¹ããããããžã§ã¯ãã«é©ããŠããŸãã
çæïŒ
- å°èŠæš¡ãªãããžã§ã¯ãã«ã¯è€éãããå ŽåããããŸãã
- ãã©ã³ãã®æ éãªç®¡çãå¿ èŠã§ãã
äŸïŒ ã°ããŒãã«ãªeã³ããŒã¹ãã©ãããã©ãŒã ããæ©èœéçºãååæããšã®ãªãªãŒã¹ãããã³é倧ãªã»ãã¥ãªãã£è匱æ§ã«å¯Ÿããææã®ããããã£ãã¯ã¹ã管çããããã«Gitflowã䜿çšããŠããŸãã
GitHub Flow
GitHub Flowã¯ãmasterïŒãŸãã¯mainïŒãã©ã³ããäžå¿ãšãããããã·ã³ãã«ãªãã©ã³ãã¢ãã«ã§ããfeatureãã©ã³ãã¯masterããäœæãããã³ãŒãã¬ãã¥ãŒåŸã«å€æŽãmasterã«ããŒãžããããã«ãã«ãªã¯ãšã¹ãã䜿çšãããŸãã
ãã©ã³ãïŒ
- master (ãŸã㯠main)ïŒ ãããã€å¯èœãªã³ãŒãã衚ããŸãã
- featureãã©ã³ãïŒ æ°æ©èœã®éçºã«äœ¿çšãããŸãããã«ãªã¯ãšã¹ããä»ããŠ
masterã«ããŒãžãããŸãã
é·æïŒ
- ã·ã³ãã«ã§çè§£ããããã§ãã
- ç¶ç¶çãããã€ã¡ã³ããè¡ããããžã§ã¯ãã«é©ããŠããŸãã
çæïŒ
- 峿 ŒãªãªãªãŒã¹ã¹ã±ãžã¥ãŒã«ãæã€ãããžã§ã¯ãã«ã¯é©ããŠããªãå ŽåããããŸãã
- å ç¢ãªCI/CDãã€ãã©ã€ã³ãå¿ èŠã§ãã
äŸïŒ äžçäžã®éçºè ããé »ç¹ã«ã³ã³ããªãã¥ãŒã·ã§ã³ããããªãŒãã³ãœãŒã¹ãããžã§ã¯ããã倿Žãè¿ éã«çµ±åããæ°æ©èœããããã€ããããã«GitHub Flowã䜿çšããŠããŸãã
GitLab Flow
GitLab Flowã¯ãGitflowãšGitHub Flowã®èŠçŽ ãçµã¿åãããæè»ãªãã©ã³ãã¢ãã«ã§ããfeatureãã©ã³ããšreleaseãã©ã³ãã®äž¡æ¹ããµããŒããããããžã§ã¯ãã®ããŒãºã«åºã¥ããŠããŸããŸãªã¯ãŒã¯ãããŒãå¯èœã«ããŸãã
ãã©ã³ãïŒ
- master (ãŸã㯠main)ïŒ æ¬çªç°å¢ã«å¯Ÿå¿ããã³ãŒãã衚ããŸãã
- featureãã©ã³ãïŒ æ°æ©èœã®éçºã«äœ¿çšãããŸãããã«ãªã¯ãšã¹ããä»ããŠ
masterã«ããŒãžãããŸãã - releaseãã©ã³ãïŒ ãªãªãŒã¹ã®æºåã«äœ¿çšãããŸãã
masterã«ããŒãžãããŸãã - environmentãã©ã³ãïŒ æ¬çªç°å¢ã«ãããã€ããåã«ãã¹ãããããã®
stagingãpre-productionã®ãããªãã©ã³ãã
é·æïŒ
- æè»ã§é©å¿æ§ããããŸãã
- ããŸããŸãªã¯ãŒã¯ãããŒããµããŒãããŸãã
çæïŒ
- GitHub Flowãããèšå®ãè€éã«ãªãããšããããŸãã
äŸïŒ å€åœç±ãœãããŠã§ã¢äŒæ¥ããããŸããŸãªãªãªãŒã¹ãµã€ã¯ã«ãšãããã€ç°å¢ãæã€è€æ°ã®è£œåã管çããããã«GitLab Flowã䜿çšããŠããŸãã
ãã©ã³ã¯ããŒã¹éçº
ãã©ã³ã¯ããŒã¹éçºã¯ãéçºè ãã¡ã€ã³ãã©ã³ãïŒãã©ã³ã¯ããã°ãã°`main`ãŸãã¯`master`ãšåŒã°ããïŒã«1æ¥ã«è€æ°åçŽæ¥ã³ãããããæŠç¥ã§ããæªå®æãŸãã¯å®éšçãªæ©èœãé ãããã«ããã£ãŒãã£ãŒãã°ã«ããã䜿çšãããŸããçåœã®ãã©ã³ãã䜿çšããããšãã§ããŸããããããã¯ã§ããã ãæ©ããã©ã³ã¯ã«ããŒãžãããŸãã
ãã©ã³ãïŒ
- master (ãŸã㯠main)ïŒ å¯äžã®ä¿¡é Œã§ããæ å ±æºããã¹ãŠã®éçºè ãçŽæ¥ããã«ã³ãããããŸãã
- çåœã®featureãã©ã³ãïŒãªãã·ã§ã³ïŒïŒ åé¢ãå¿ èŠãªå€§èŠæš¡ãªæ©èœã«äœ¿çšãããŸãããè¿ éã«ããŒãžãããŸãã
é·æïŒ
- è¿ éãªãã£ãŒãããã¯ã«ãŒããšç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã
- ããŒãžã³ã³ããªã¯ãã®åæžã
- ç°¡çŽ åãããã¯ãŒã¯ãããŒã
çæïŒ
- 匷åãªCI/CDãã€ãã©ã€ã³ãšèªåãã¹ããå¿ èŠã§ãã
- é »ç¹ã«ã³ãããããé »ç¹ã«çµ±åããèŠåŸããéçºè ãæ±ããããŸãã
- æªå®æã®æ©èœã管çããããã®ãã£ãŒãã£ãŒãã°ã«ãžã®äŸåã
äŸïŒ è¿ éãªã€ãã¬ãŒã·ã§ã³ãšæå°éã®ããŠã³ã¿ã€ã ãéèŠãªé«é »åºŠååŒãã©ãããã©ãŒã ããç¶ç¶çã«ã¢ããããŒãããããã€ããããã«ãã©ã³ã¯ããŒã¹éçºã䜿çšããŠããŸãã
广çãªã³ãããã¡ãã»ãŒãžã®äœæ
ããæžãããã³ãããã¡ãã»ãŒãžã¯ãã³ãŒãããŒã¹ã®å±¥æŽãçè§£ããããã«äžå¯æ¬ ã§ãããããã¯å€æŽã®æèãæäŸããåé¡ã®ãããã°ã容æã«ããŸãã广çãªã³ãããã¡ãã»ãŒãžãäœæããã«ã¯ã以äžã®ã¬ã€ãã©ã€ã³ã«åŸã£ãŠãã ããïŒ
- æç¢ºã§ç°¡æœãªä»¶åã䜿çšããïŒ50æå以äžïŒïŒ ã³ãããã®ç®çãç°¡æœã«èª¬æããŸãã
- åœä»€åœ¢ã䜿çšããïŒ ä»¶åãåè©ã§å§ããŸãïŒäŸïŒãFixãããAddãããRemoveãïŒãæ¥æ¬èªã§ã¯ãä¿®æ£ãã远å ããåé€ããªã©ã
- ããè©³çŽ°ãªæ¬æãå«ããïŒãªãã·ã§ã³ïŒïŒ 倿Žã®èåŸã«ããæ ¹æ ã説æããæèãæäŸããŸãã
- ä»¶åãšæ¬æã空è¡ã§åºåãã
- é©åãªææ³ãšã¹ãã«ã䜿çšããã
äŸïŒ
fix: ãŠãŒã¶ãŒèªèšŒã®åé¡ã解決 ãã®ã³ãããã¯ãäžæ£ãªãã¹ã¯ãŒãæ€èšŒãåå ã§ãŠãŒã¶ãŒããã°ã€ã³ã§ããªãã£ããã°ãä¿®æ£ããŸãã
ã³ãããã¡ãã»ãŒãžã®ãã¹ããã©ã¯ãã£ã¹ïŒ
- ã¢ãããã¯ãªã³ãããïŒ åã³ãããã¯ãåäžã®è«ççãªå€æŽã衚ãã¹ãã§ããé¢é£ã®ãªã倿Žãåäžã®ã³ãããã«ã°ã«ãŒãåããªãã§ãã ãããããã«ããã倿Žã®åãæ¶ããå±¥æŽã®çè§£ã容æã«ãªããŸãã
- 課é¡ã®åç §ïŒ ã³ãããã¡ãã»ãŒãžã«èª²é¡ç®¡çã·ã¹ãã ïŒäŸïŒJIRA, GitHub IssuesïŒãžã®åç §ãå«ããŸããããã«ãããã³ãŒãã®å€æŽã察å¿ããèŠä»¶ããã°ã¬ããŒãã«ãªã³ã¯ãããŸããäŸïŒ `Fixes #123` or `Addresses JIRA-456`ã
- äžè²«ãããã©ãŒãããã®äœ¿çšïŒ ããŒã å šäœã§ã³ãããã¡ãã»ãŒãžã®äžè²«ãããã©ãŒãããã確ç«ããŸããããã«ãããå¯èªæ§ãåäžããã³ãããå±¥æŽã®æ€çŽ¢ãšåæã容æã«ãªããŸãã
ã³ãŒãã¬ãã¥ãŒã®å®è£
ã³ãŒãã¬ãã¥ãŒã¯ãã³ãŒãã®å質ã確ä¿ããæœåšçãªåé¡ãç¹å®ããããã®éèŠãªã¹ãããã§ãããã«ãªã¯ãšã¹ãïŒGitLabã§ã¯ããŒãžãªã¯ãšã¹ãïŒã䜿çšããŠãã³ãŒãã¬ãã¥ãŒãGitã¯ãŒã¯ãããŒã«çµ±åããŸãããã«ãªã¯ãšã¹ãã«ãããã¬ãã¥ã¢ãŒã¯å€æŽãã¡ã€ã³ãã©ã³ãã«ããŒãžãããåã«å€æŽãæ€æ»ã§ããŸãã
ã³ãŒãã¬ãã¥ãŒã®ãã¹ããã©ã¯ãã£ã¹ïŒ
- æç¢ºãªã³ãŒãã¬ãã¥ãŒã¬ã€ãã©ã€ã³ã確ç«ããïŒ ã³ãŒãã£ã³ã°æšæºãããã©ãŒãã³ã¹ãã»ãã¥ãªãã£ããã¹ãã«ãã¬ããžãªã©ãã³ãŒãã¬ãã¥ãŒã®åºæºãå®çŸ©ããŸãã
- ã¬ãã¥ã¢ãŒãå²ãåœãŠãïŒ å€æŽãã¬ãã¥ãŒããããã«ãé¢é£ããå°éç¥èãæã€ã¬ãã¥ã¢ãŒãå²ãåœãŠãŸããç¥èå ±æãåºããããã«ã¬ãã¥ã¢ãŒãããŒããŒã·ã§ã³ãããããšãæ€èšããŠãã ããã
- 建èšçãªãã£ãŒãããã¯ãæäŸããïŒ å ·äœçã§å®è¡å¯èœãªãã£ãŒãããã¯ãæäŸããããšã«çŠç¹ãåœãŠãŸããææ¡ã®èåŸã«ããçç±ã説æããŸãã
- ãã£ãŒãããã¯ã«è¿ éã«å¯Ÿå¿ããïŒ ã¬ãã¥ã¢ãŒã®ã³ã¡ã³ãã«å¿çããæèµ·ãããåé¡ã«å¯ŸåŠããŸãã
- ã³ãŒãã¬ãã¥ãŒãèªååããïŒ ãªã³ã¿ãŒãéçè§£æããŒã«ãèªåãã¹ãã䜿çšããŠãæœåšçãªåé¡ãèªåçã«ç¹å®ããŸãã
- ãã«ãªã¯ãšã¹ããå°ããä¿ã€ïŒ å°ããªãã«ãªã¯ãšã¹ãã¯ã¬ãã¥ãŒãããããã³ã³ããªã¯ãã®ãªã¹ã¯ãæžãããŸãã
äŸïŒ GitHubã䜿çšãã忣ããŒã ãéçºè ã¯ãã¹ãŠã®å€æŽã«å¯ŸããŠãã«ãªã¯ãšã¹ããäœæããããŒãžãããåã«å°ãªããšã2人ã®ä»ã®éçºè ããã«ãªã¯ãšã¹ããæ¿èªããå¿ èŠããããŸããããŒã ã¯ãæåã®ã³ãŒãã¬ãã¥ãŒãšèªååãããéçè§£æããŒã«ãçµã¿åãããŠã³ãŒãå質ã確ä¿ããŠããŸãã
Gitããã¯ã®æŽ»çš
Gitããã¯ã¯ãã³ããããããã·ã¥ãããŒãžãªã©ã®ç¹å®ã®Gitã€ãã³ãã®ååŸã«èªåçã«å®è¡ãããã¹ã¯ãªããã§ããã¿ã¹ã¯ã®èªååãããªã·ãŒã®åŒ·å¶ããšã©ãŒã®é²æ¢ã«äœ¿çšã§ããŸãã
Gitããã¯ã®çš®é¡ïŒ
- pre-commitïŒ ã³ããããäœæãããåã«å®è¡ãããŸãããªã³ã¿ãŒã®å®è¡ãã³ãŒãã®ãã©ãŒããããäžè¬çãªãšã©ãŒã®ãã§ãã¯ã«äœ¿çšã§ããŸãã
- pre-pushïŒ ããã·ã¥ãå®è¡ãããåã«å®è¡ãããŸãããã¹ãã®å®è¡ãééã£ããã©ã³ããžã®ããã·ã¥ã®é²æ¢ã«äœ¿çšã§ããŸãã
- post-commitïŒ ã³ããããäœæãããåŸã«å®è¡ãããŸããéç¥ã®éä¿¡ã課é¡ç®¡çã·ã¹ãã ã®æŽæ°ã«äœ¿çšã§ããŸãã
äŸïŒ pre-commitããã¯ã䜿çšããŠãã³ãŒãã¹ã¿ã€ã«ã¬ã€ãã«åŸã£ãŠã³ãŒããèªåçã«ãã©ãŒãããããæ§æãšã©ãŒã®ããã³ããããé²ãããŒã ãããã«ãããã³ãŒãã®äžè²«æ§ã確ä¿ãããã³ãŒãã¬ãã¥ã¢ãŒã®è² æ
ã軜æžãããŸãã
CI/CDãã€ãã©ã€ã³ãšã®çµ±å
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çããªããªãŒïŒCI/CDïŒãã€ãã©ã€ã³ã¯ãã³ãŒã倿Žã®ãã«ãããã¹ãããããã€ã®ããã»ã¹ãèªååããŸããGitã¯ãŒã¯ãããŒãCI/CDãã€ãã©ã€ã³ãšçµ±åããããšã§ãããéããããä¿¡é Œæ§ã®é«ããªãªãŒã¹ãå¯èœã«ãªããŸãã
CI/CDçµ±åã®äž»èŠãªã¹ãããïŒ
- CI/CDããªã¬ãŒã®èšå®ïŒ ãªããžããªã«æ°ããã³ããããããã·ã¥ããããããã«ãªã¯ãšã¹ããäœæãããããããšãã«ããã«ããšãã¹ããèªåçã«ããªã¬ãŒããããã«CI/CDã·ã¹ãã ãèšå®ããŸãã
- èªåãã¹ãã®å®è¡ïŒ ãŠããããã¹ããçµ±åãã¹ãããšã³ãããŒãšã³ããã¹ããå®è¡ããŠãã³ãŒãã®å€æŽãæ€èšŒããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®ãã«ããšããã±ãŒãžåïŒ ã¢ããªã±ãŒã·ã§ã³ããã«ããããããã€å¯èœãªããã±ãŒãžãäœæããŸãã
- ã¹ããŒãžã³ã°ç°å¢ãžã®ãããã€ïŒ ãã¹ããšæ€èšŒã®ããã«ãã¢ããªã±ãŒã·ã§ã³ãã¹ããŒãžã³ã°ç°å¢ã«ãããã€ããŸãã
- æ¬çªç°å¢ãžã®ãããã€ïŒ ãã¹ããæåããåŸãã¢ããªã±ãŒã·ã§ã³ãæ¬çªç°å¢ã«ãããã€ããŸãã
äŸïŒ JenkinsãCircleCIããŸãã¯GitLab CIã䜿çšããŠãã«ãããã¹ãããããã€ããã»ã¹ãèªååããããŒã ãmasterãã©ã³ããžã®ãã¹ãŠã®ã³ããããæ°ãããã«ããããªã¬ãŒããèªåãã¹ããå®è¡ãããŠã³ãŒãã®å€æŽãæ€èšŒãããŸãããã¹ãã«åæ Œãããšãã¢ããªã±ãŒã·ã§ã³ã¯èªåçã«ã¹ããŒãžã³ã°ç°å¢ã«ãããã€ãããŸããã¹ããŒãžã³ã°ç°å¢ã§ã®ãã¹ããæåããåŸãã¢ããªã±ãŒã·ã§ã³ã¯æ¬çªç°å¢ã«ãããã€ãããŸãã
ã°ããŒãã«ããŒã ã®ããã®é«åºŠãªGitãã¯ããã¯
以äžã¯ãç¹ã«å°ççã«åæ£ããããŒã ã®ã¯ãŒã¯ãããŒãããã«åŒ·åã§ããé«åºŠãªGitãã¯ããã¯ã§ãïŒ
ãµãã¢ãžã¥ãŒã«ãšãµãããªãŒ
ãµãã¢ãžã¥ãŒã«ïŒ ä»ã®Gitãªããžããªãã¡ã€ã³ãªããžããªå ã®ãµããã£ã¬ã¯ããªãšããŠå«ããããšãã§ããŸããããã¯ãäŸåé¢ä¿ã®ç®¡çããããžã§ã¯ãéã§ã®ã³ãŒãå ±æã«åœ¹ç«ã¡ãŸãã
ãµãããªãŒïŒ ä»ã®Gitãªããžããªãã¡ã€ã³ãªããžããªã®ãµããã£ã¬ã¯ããªã«ããŒãžããããšãã§ããŸããããã¯ããµãã¢ãžã¥ãŒã«ãããæè»ãªä»£æ¿ææ®µã§ãã
䜿çšããå Žé¢ïŒ
- ãµãã¢ãžã¥ãŒã«ïŒ å€éšãªããžããªã®ç¹å®ã®ããŒãžã§ã³ã远跡ããå¿ èŠãããå Žåã
- ãµãããªãŒïŒ ä»ã®ãªããžããªããã³ãŒããåã蟌ã¿ãããããããã¡ã€ã³ãªããžããªã®äžéšãšããŠæ±ãããå Žåã
äŸïŒ å€§èŠæš¡ãªãœãããŠã§ã¢ãããžã§ã¯ãããå€éšã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã管çããããã«ãµãã¢ãžã¥ãŒã«ã䜿çšããŠããŸããåã©ã€ãã©ãªã¯ç¬èªã®Gitãªããžããªã§ç¶æãããã¡ã€ã³ãããžã§ã¯ãã¯ã©ã€ãã©ãªããµãã¢ãžã¥ãŒã«ãšããŠå«ã¿ãŸããããã«ãããããŒã ã¯ã¡ã€ã³ãããžã§ã¯ãã«åœ±é¿ãäžããããšãªããã©ã€ãã©ãªãç°¡åã«æŽæ°ã§ããŸãã
ãã§ãªãŒãããã³ã°
ãã§ãªãŒãããã³ã°ã䜿çšãããšããããã©ã³ãããç¹å®ã®ã³ããããéžæããå¥ã®ãã©ã³ãã«é©çšã§ããŸããããã¯ããã©ã³ãéã§ãã°ä¿®æ£ãæ©èœãç§»æ€ããã®ã«åœ¹ç«ã¡ãŸãã
䜿çšããå Žé¢ïŒ
- ãã©ã³ãå šäœãããŒãžããã«ããããã©ã³ãããå¥ã®ãã©ã³ãã«ç¹å®ã®ä¿®æ£ãé©çšããå¿ èŠãããå Žåã
- ãã©ã³ãéã§æ©èœãéžæçã«ç§»æ€ãããå Žåã
äŸïŒ ããŒã ããªãªãŒã¹ãã©ã³ãã§é倧ãªãã°ãä¿®æ£ãããã®ä¿®æ£ãå°æ¥ã®ãªãªãŒã¹ã«å«ãŸããããã«ããã®ä¿®æ£ãmasterãã©ã³ãã«ãã§ãªãŒããã¯ããŸãã
ãªããŒã¹
ãªããŒã¹ã䜿çšãããšããã©ã³ããæ°ããããŒã¹ã³ãããã«ç§»åã§ããŸããããã¯ãã³ãããå±¥æŽãã¯ãªãŒã³ã¢ããããããŒãžã³ã³ããªã¯ããåé¿ããã®ã«åœ¹ç«ã¡ãŸãã
䜿çšããå Žé¢ïŒ
- ç·åœ¢ã®ã³ãããå±¥æŽãäœæãããå Žåã
- ããŒãžã³ã³ããªã¯ããé¿ãããå Žåã
泚æïŒ ãªããŒã¹ã¯å±¥æŽãæžãæããå¯èœæ§ããããããç¹ã«å ±æãã©ã³ãã§ã¯æ³šæããŠäœ¿çšããŠãã ããã
äŸïŒ featureãã©ã³ãã§äœæ¥ããŠããéçºè
ãããã«ãªã¯ãšã¹ããäœæããåã«ãèªåã®ãã©ã³ããmasterãã©ã³ãã®ææ°ããŒãžã§ã³ã«ãªããŒã¹ããŸããããã«ãããfeatureãã©ã³ããææ°ã®ç¶æ
ã«ä¿ãããããŒãžã³ã³ããªã¯ãã®ãªã¹ã¯ã軜æžãããŸãã
ãã€ã»ã¯ã
ãã€ã»ã¯ãã¯ããã°ãå°å ¥ããã³ããããèŠã€ããããã®åŒ·åãªããŒã«ã§ããç°ãªãã³ãããããã§ãã¯ã¢ãŠããããã°ãååšãããã©ããããã¹ãããããã»ã¹ãèªååããŸãã
䜿çšããå Žé¢ïŒ
- ãã°ãå°å ¥ããã³ããããèŠã€ããå¿ èŠãããå Žåã
äŸïŒ ããŒã ãGit bisectã䜿çšããŠãããã©ãŒãã³ã¹ã®äœäžãåŒãèµ·ãããã³ããããè¿ éã«ç¹å®ããŸãã圌ãã¯ãæ¢ç¥ã®è¯å¥œãªã³ããããšæ¢ç¥ã®äžè¯ãªã³ããããç¹å®ããããšããå§ãããã°ãèŠã€ãããŸã§Git bisectã䜿çšããŠç°ãªãã³ããããèªåçã«ãã§ãã¯ã¢ãŠãããŸãã
Gitã¯ãŒã¯ãããŒæé©åã®ããã®ããŒã«
ããã€ãã®ããŒã«ãGitã¯ãŒã¯ãããŒã®æé©åã«åœ¹ç«ã¡ãŸãïŒ
- Git GUIã¯ã©ã€ã¢ã³ãïŒ GitKrakenãSourceTreeãForkãªã©ã®ããŒã«ã¯ãGitæäœã®èŠèŠçãªã€ã³ã¿ãŒãã§ãŒã¹ãæäŸãããã©ã³ããã³ããããããŒãžã®ç®¡çã容æã«ããŸãã
- ã³ãŒãã¬ãã¥ãŒããŒã«ïŒ GitHubãGitLabãBitbucketãªã©ã®ãã©ãããã©ãŒã ã¯ããã«ãªã¯ãšã¹ããã³ã¡ã³ããæ¿èªã¯ãŒã¯ãããŒãªã©ãçµã¿èŸŒã¿ã®ã³ãŒãã¬ãã¥ãŒæ©èœãæäŸããŸãã
- CI/CDããŒã«ïŒ JenkinsãCircleCIãGitLab CIãTravis CIãªã©ã®ããŒã«ã¯ããã«ãããã¹ãããããã€ã®ããã»ã¹ãèªååããŸãã
- éçè§£æããŒã«ïŒ SonarQubeãESLintãCheckstyleãªã©ã®ããŒã«ã¯ãã³ãŒããèªåçã«åæããŠæœåšçãªåé¡ãæ€åºããŸãã
- Gitããã¯ç®¡çããŒã«ïŒ HuskyãLefthookãªã©ã®ããŒã«ã¯ãGitããã¯ã®ç®¡çããã»ã¹ãç°¡çŽ åããŸãã
ã°ããŒãã«ããŒã ã«ããã課é¡ã®å æ
ã°ããŒãã«ããŒã ã¯ããœãããŠã§ã¢éçºãããžã§ã¯ãã§å ±åäœæ¥ããéã«ç¹æã®èª²é¡ã«çŽé¢ããŸãïŒ
- ã¿ã€ã ãŸãŒã³ã®éãïŒ ç°ãªãã¿ã€ã ãŸãŒã³éã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ãšã³ãŒãã¬ãã¥ãŒã調æŽããŸããã¡ãŒã«ããã£ãããªã©ã®éåæã³ãã¥ãã±ãŒã·ã§ã³æ¹æ³ã®äœ¿çšãæ€èšãããã¹ãŠã®åå è ã«ãšã£ãŠéœåã®è¯ãæéã«äŒè°ãã¹ã±ãžã¥ãŒã«ããŸãã
- èšèªã®å£ïŒ ã³ãããã¡ãã»ãŒãžãã³ãŒãã³ã¡ã³ããããã¥ã¡ã³ãã§ã¯æç¢ºã§ç°¡æœãªèšèªã䜿çšããŸããç¿»èš³ã®æäŸãå€èšèªã³ãã¥ãã±ãŒã·ã§ã³ããµããŒãããããŒã«ã®äœ¿çšãæ€èšããŸãã
- æåã®éãïŒ ã³ãã¥ãã±ãŒã·ã§ã³ã¹ã¿ã€ã«ãåãæ¹ã®æåçãªéãã«æ³šæããŸããç°ãªãèŠç¹ãå°éããæã蟌ã¿ãé¿ããŸãã
- ãããã¯ãŒã¯æ¥ç¶ïŒ ãã¹ãŠã®ããŒã ã¡ã³ããŒãGitãªããžããªã«ç¢ºå®ã«ã¢ã¯ã»ã¹ã§ããããã«ããŸããéçºè ããªãã©ã€ã³ã§äœæ¥ã§ããããã«ãGitã®ãããªåæ£ããŒãžã§ã³ç®¡çã·ã¹ãã ã®äœ¿çšãæ€èšããŸãã
- ã»ãã¥ãªãã£äžã®æžå¿µïŒ Gitãªããžããªãäžæ£ã¢ã¯ã»ã¹ããä¿è·ããããã«ã匷åãªã»ãã¥ãªãã£å¯Ÿçãå®è£ ããŸããå€èŠçŽ èªèšŒã䜿çšããã¢ã¯ã»ã¹ãã°ã宿çã«ç£æ»ããŸãã
çµè«
Gitã¯ãŒã¯ãããŒã®æé©åã¯ãç¹ã«ã°ããŒãã«ããŒã ã«ãšã£ãŠãã³ã©ãã¬ãŒã·ã§ã³ãã³ãŒãå質ãçç£æ§ãåäžãããããã«äžå¯æ¬ ã§ããé©åãªãã©ã³ãæŠç¥ãéžæãã广çãªã³ãããã¡ãã»ãŒãžãäœæããã³ãŒãã¬ãã¥ãŒãå®è£ ããGitããã¯ã掻çšããCI/CDãã€ãã©ã€ã³ãšçµ±åããããšã§ãéçºããã»ã¹ãåçåããé«å質ã®ãœãããŠã§ã¢ãããå¹ççã«æäŸã§ããŸããç¹å®ã®ãããžã§ã¯ãã®ããŒãºãšããŒã ã®ãã€ããã¯ã¹ã«åãããŠã¯ãŒã¯ãããŒãé©å¿ãããããšãå¿ããªãã§ãã ããããã¹ããã©ã¯ãã£ã¹ãåãå ¥ããGitã®åãæŽ»çšããããšã§ãã°ããŒãã«éçºããŒã ã®å¯èœæ§ãæå€§éã«åŒãåºãããšãã§ããŸãã